#include <stdio.h>
#define MaxSize 100
typedef int DataType;

typedef struct
{
    DataType list[MaxSize];
    int size;
} SeqList;

void ListInitiate(SeqList *L){
    L->size = 0;
}
int ListLength(SeqList L){
    return L.size;
}
int ListInsert(SeqList *L, int i, DataType x){
    int j;
    if(L->size >= MaxSize)
    {
        printf("顺序表已满无法插入！\n");
        return 0;
    }
    else if(i < 0 || i > L->size)
    {
        printf("参数i不合法！\n");
        return 0;
    } else{
        //此段程序有误
        for (j =  L->size - 1; j >= i; j--)
        L->list[j+1] = L->list[j];
        L->list[i] = x;
        L->size ++;
        return 1;
    }
}

int ListDelete(SeqList *L, int i, DataType *x){
    int j;
    if(L->size <= 0){
        printf("顺序表已空无数据可删！\n");
        return 0;
    } else if(i < 0 || i > L->size-1){
        printf("参数i不合法");
        return 0;
    } else{
        //此段程序有误
        *x = L->list[i];
        for (j = i+1; j <= L->size-1; j++)
            L->list[j-1] = L->list[j];
        L->size--;
        return 1;
    }
}

int ListGet(SeqList L, int i, DataType *x){
    if(i < 0 || i > L.size-1){
        printf("参数i不合法!\n");
        return 0;
    } else{
        *x = L.list[i];
        return 1;
    }
}

// 有错误：实现函数体，实现在L内查找x。
// 当x存在于L中时，返回x所在的索引的最小值；
//当x不存在于L中时，返回-1.

int ListSearch(SeqList L, DataType x){
    for (int i = 0; i < L.size; ++i) {
        if(L.list[i] == x){
            return i;
        }
    }
    return -1;
}

int main(){
    SeqList myList;
    int i , x;
    ListInitiate(&myList);
    for (i = 0; i < 10; i++)
        ListInsert(&myList, i, i+1);
        ListDelete(&myList, 4, &x);
    for(i = 0; i < ListLength(myList); i++){
    //此段程序有一处错误
        ListGet(myList, i, &x);
        printf("%d ",x);
    }
    printf("\n");
    printf("%d ", ListSearch(myList,9));
    printf("%d ", ListSearch(myList,11));
    return 0;
}